const COZE_API = {
  url: 'https://api.coze.cn/v1/workflow/run',
  workflowId: '7450330145205XXXX',
  token: 'XXXXXX'
} 
//扣子智能体密令无法公开，请自行替换

Page({
  data: {
    searchText: '',
    searchHistory: [],
    aiRecipeNames: [],
    selectedAiRecipe: null,
    aiRecipesData: [],
    isSearching: false
  },

  onLoad() {
    // 从本地存储加载搜索历史
    const history = wx.getStorageSync('searchHistory') || []
    this.setData({ searchHistory: history })
  },

  // 处理搜索输入
  onSearchInput(e) {
    this.setData({ searchText: e.detail.value.trim() })
  },

  // 处理搜索确认
  async handleSearchConfirm(e) {
    let keyword = ''
    
    // 处理点击搜索按钮的情况
    if (e.currentTarget && e.currentTarget.dataset.value) {
      keyword = e.currentTarget.dataset.value
    }
    // 处理回车确认的情况
    else if (e.detail && e.detail.value) {
      keyword = e.detail.value
    }
    // 如果都没有，使用当前搜索框的值
    else {
      keyword = this.data.searchText
    }

    // 确保keyword是字符串并去除空格
    keyword = String(keyword || '').trim()
    if (!keyword) return

    // 更新搜索历史
    this.updateSearchHistory(keyword)

    // 获取AI推荐
    await this.getAiSuggestions(keyword)
  },

  // 更新搜索历史
  updateSearchHistory(keyword) {
    let history = this.data.searchHistory
    // 移除已存在的相同关键词
    history = history.filter(item => item !== keyword)
    // 将新关键词添加到开头
    history.unshift(keyword)
    // 只保留最近的10条记录
    history = history.slice(0, 10)
    
    this.setData({ searchHistory: history })
    wx.setStorageSync('searchHistory', history)
  },

  // 清空搜索历史
  clearSearchHistory() {
    this.setData({ searchHistory: [] })
    wx.setStorageSync('searchHistory', [])
  },

  // 获取AI建议
  async getAiSuggestions(keyword) {
    this.setData({ 
      isSearching: true,
      aiRecipeNames: [],
      selectedAiRecipe: null
    })

    try {
      console.log('正在请求 AI 推荐，关键词:', keyword)
      const requestData = {
        workflow_id: COZE_API.workflowId,
        parameters: {
          user_id: "12345",
          user_name: "George",
          bot_user_input: keyword
        }
      }
      console.log('发送的请求数据:', requestData)

      const response = await new Promise((resolve, reject) => {
        wx.request({
          url: COZE_API.url,
          method: 'POST',
          header: {
            'Authorization': `Bearer ${COZE_API.token}`,
            'Content-Type': 'application/json'
          },
          data: requestData,
          success: (res) => {
            console.log('API 响应成功:', res.data)
            if (res.data && res.data.code === 0 && res.data.data) {
              try {
                const responseData = JSON.parse(res.data.data)
                console.log('解析后的响应数据:', responseData)
                
                if (responseData && responseData.output) {
                  const output = String(responseData.output)
                  console.log('处理的输出内容:', output)
                  
                  // 提���食谱名称
                  const recipeNames = this.extractRecipeNames(output)
                  console.log('提取的食谱名称:', recipeNames)

                  if (recipeNames.length > 0) {
                    // 为每个食谱名称创建对象，包含完整内容
                    const aiRecipes = recipeNames.map(name => ({
                      name: name,
                      fullContent: output
                    }))
                    
                    this.setData({ 
                      aiRecipeNames: aiRecipes,
                      aiRecipesData: aiRecipes
                    })

                    wx.showToast({
                      title: '已获取推荐食谱',
                      icon: 'success'
                    })
                  } else {
                    // 如果没有提取到食谱名称，使用默认名称
                    const aiRecipe = {
                      name: '智能推荐食谱',
                      fullContent: output
                    }
                    
                    this.setData({ 
                      aiRecipeNames: [aiRecipe],
                      aiRecipesData: [aiRecipe]
                    })
                  }
                } else {
                  throw new Error('响应数据中没有output字段')
                }
              } catch (error) {
                console.error('解析响应数据失败:', error)
                wx.showToast({
                  title: '解析推荐失败',
                  icon: 'none'
                })
              }
            } else {
              console.error('API 响应格式不正确:', res.data)
              wx.showToast({
                title: res.data.msg || 'AI 推荐获取失败',
                icon: 'none'
              })
            }
            resolve(res.data)
          },
          fail: (err) => {
            console.error('API 请求失败:', err)
            reject(err)
            wx.showToast({
              title: 'AI 推荐获取失败',
              icon: 'none'
            })
          }
        })
      })

    } catch (error) {
      console.error('AI 推荐获取失败:', error)
      wx.showToast({
        title: 'AI 推荐获取失败',
        icon: 'none'
      })
    } finally {
      this.setData({ isSearching: false })
    }
  },

  // 提取食谱名称的辅助函数
  extractRecipeNames(content) {
    if (!content || typeof content !== 'string') {
      console.error('无效的内容格式:', content)
      return []
    }

    try {
      const recipeNames = []
      const lines = content.split('\n')
      
      lines.forEach(line => {
        // 匹配"食谱名称："或"菜谱名称："后面的内容
        const match = line.match(/[食菜]谱名称[：:]\s*(.+)/)
        if (match && match[1]) {
          recipeNames.push(match[1].trim())
        }
      })
      
      // 如果没有找到标准格式的名称，尝试提取第一行作为名称
      if (recipeNames.length === 0 && lines.length > 0) {
        const firstLine = lines[0].trim()
        if (firstLine && !firstLine.includes('：') && !firstLine.includes(':')) {
          recipeNames.push(firstLine)
        }
      }
      
      return recipeNames
    } catch (error) {
      console.error('提取食谱名称失败:', error)
      return []
    }
  },

  // 处理AI菜谱点击
  handleAiRecipeClick(e) {
    const recipeName = e.currentTarget.dataset.name
    const recipe = this.data.aiRecipesData.find(r => r.name === recipeName)
    
    if (recipe) {
      this.setData({
        selectedAiRecipe: recipe,
        searchText: '',
        aiRecipeNames: []
      })

      // 滚动到详情区域
      wx.pageScrollTo({
        selector: '.ai-recipe-detail',
        duration: 300
      })
    }
  }
}) 